package com.nicolas.pattern.visitor;

/**
 * 访问者模式是一种较为复杂的行为型设计模式，它包含访问者和被访问元素两个主要组成部分，
 * 这些被访问的元素通常具有不同的类型，且不同的访问者可以对它们进行不同的访问操作。
 * 例如处方单中的各种药品信息就是被访问的元素，而划价人员和药房工作人员就是访问者。
 * 访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能，为这些不同类型的元素增加新的操作。

在使用访问者模式时，被访问元素通常不是单独存在的，它们存储在一个集合中，
这个集合被称为“对象结构”，访问者通过遍历对象结构实现对其中存储的元素的逐个操作。

访问者模式(Visitor Pattern):提供一个作用于某对象结构中的各元素的操作表示，
它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
访问者模式是一种对象行为型模式。
 * @author cuilj --2017年2月14日 下午5:29:16
 *
 */
public class VisitorMain {
	public static void main(String args[])  
    {  
        EmployeeList list = new EmployeeList();  
        Employee fte1,fte2,fte3,pte1,pte2;  
  
        fte1 = new FulltimeEmployee("张无忌",3200.00,45);  
        fte2 = new FulltimeEmployee("杨过",2000.00,40);  
        fte3 = new FulltimeEmployee("段誉",2400.00,38);  
        pte1 = new ParttimeEmployee("洪七公",80.00,20);  
        pte2 = new ParttimeEmployee("郭靖",60.00,18);  
  
        list.addEmployee(fte1);  
        list.addEmployee(fte2);  
        list.addEmployee(fte3);  
        list.addEmployee(pte1);  
        list.addEmployee(pte2);  
  
        Department dep;  
        dep = (Department)XMLUtil.getBean();  
        list.accept(dep);  
    }  
}
